草庐IT

Android MediaCodec dequeueInputBuffer 总是返回 -1

全部标签

c# - 当路径太长时,File.Exists() 错误地返回 false

我目前正在开发一个遍历各种目录的程序,以确保使用File.Exists()存在特定文件。应用程序一直声称某些文件不存在,而实际存在,我最近发现这个错误是由于路径太长造成的。我知道有一些关于SO的问题可以解决File.Exists()返回不正确的值,但似乎没有一个可以解决这个特定问题。重命名目录和文件以缩短路径并不是一个真正的选择,所以我现在不确定该怎么做。是否有解决此问题的变通方法?正在使用的代码没什么特别的(我删除了一些不相关的代码),但我会在下面包含它以防万一。privatevoidcheckFile(stringpath){if(!File.Exists(path))Consol

c# - 为什么返回集合接口(interface)而不是具体类型?

这个问题在这里已经有了答案:ListorIList[closed](18个答案)关闭8年前。我在其他人的代码中注意到,返回通用集合的方法几乎总是返回一个接口(interface)(例如IEnumerable或IList)而不是具体的实现。我有两个相关的问题。首先,为什么(如果有的话)返回接口(interface)更好?其次,是否有包含Sort方法的集合接口(interface)(如List那样)?

c# - 为什么 ReferenceEquals(s1,s2) 返回 true

Strings1="Hello";Strings2="Hello";这里s1,s2是不同的,但是ReferenceEquals()返回true的原因 最佳答案 这是由于interning-CLI自动重新使用获得的字符串作为文字(即直接来自您的源代码的字符串)。请注意,如果您这样做了:char[]chars={'h','e','l','l','o'};strings1=newstring(chars);strings2=newstring(chars);它们不会是相同的字符串实例,因为它们不是来自文字。这是针对LdstrILinstr

c# - 为什么 Interlocked.Add() 方法必须返回一个值?

publicstaticintAdd(refintlocation1,intvalue)我试图在多线程场景中使用Interlocked.Add(refintlocation1,intvalue)方法以原子方式添加到数字。但是我对自己有一个疑问:为什么该方法再次返回location1值?相反,我们可以直接使用作为“ref”传递的变量。下面是一些伪代码:inta=6;intb=7;//somethingelseInterlocked.Add(refa,b);//Usethevariable'a'here. 最佳答案 因为变量refa可能

c# - 如何指示何时故意忽略返回值

在某些使用C/C++的情况下,我可以在语法上向编译器指示故意忽略返回值:intSomeOperation(){//Dotheoperationreturnreport_id;}intmain(){//Weexecutetheoperation,butinthisparticularcontextwe//havenouseofthereportidreturned.(void)SomeOperation();}我发现这是一种公平的做法,首先因为大多数编译器不会在这里生成警告,其次因为它明确地向future的开发人员表明作者有意识地选择忽略返回。它使作者的思路不含糊。据我所知,C#编译器不

c# - 从 LINQ 查询结果返回单个属性

以下表达式返回一个联系人-具有数十个属性的整个联系人。这很好,但理想情况下,我希望返回的只是联系人的ID(contact.contactId)属性。我该怎么做?varassocOrg=Contacts.Where(x=>x.ContactTypeID==2&&x.OrganizationName=="COMPANYXYZ"); 最佳答案 varresult=Contacts.Where(x=>...).Select(x=>x.ContactID);或varresult=fromxinContactswherex.ContactTyp

c# - 使用没有返回类型的 yield

我有一个像这样的长循环程序:publicvoidProcess(){booldone=false;do{//dostuff}while(!done);}我想分成几部分,让调用例程在某种UI中显示我的进度。它是一个类库,因此调用者可以是任何东西(控制台应用程序、WinForms、WebApp等)。如果我能做到,那将是最简单的:publicvoidProcess(){booldone=false;do{//dostuffyieldreturn;}while(!done);}因此调用者可以继续调用该方法直到它完成。这听起来更像是BackgroundWorker的工作,但对于控制台应用程序来说

c# - 类型 'System.DateTime' 的表达式不能用于返回类型 'System.Object'

我已经创建了一个用于排序的表达式,它工作正常,直到我点击DateTime字段,我在其中收到以下错误(在第二行):Expressionoftype'System.DateTime'cannotbeusedforreturntype'System.Object'这是我的代码:ParameterExpressionparam=Expression.Parameter(typeof(MyEntity),"x");Expression>sortExpression=Expression.Lambda>(Expression.Property(param,sortKey),param);有人能帮忙

c# - 对一个集合进行分组并返回一个字典

我编写了一个方法,该方法采用项目集合(价格项目-每个项目都有一个数量和一个代码)并按代码对它们进行分组,然后返回一个IDictionary,其中键是项目的代码,值是具有该代码的项目组(希望有意义!)下面是方法的实现:publicIDictionary>GetGroupedPriceDetails(IEnumerablepriceDetails){//createadictionarytoreturnvargroupedPriceDetails=newDictionary>();//groupthepricedetailsbycodevargrouping=priceDetails.Gr

c# - 返回默认值。 (C#)

我正在创建自己的字典,但在执行TryGetValue时遇到了问题功能。当找不到key时,我没有任何东西可以分配给out参数,所以我将其保留原样。这会导致以下错误:“在控制离开当前方法之前,必须将输出参数‘value’分配给”所以,基本上,我需要一种方法来获取默认值(0、false或nullptr,具体取决于类型)。我的代码类似于以下内容:classMyEmptyDictionary:IDictionary{boolIDictionary.TryGetValue(Kkey,outVvalue){returnfalse;}....} 最佳答案